package com.dinner.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.dinner.model.MenuItem;
import com.dinner.model.MenuType;
import com.dinner.service.MenuItemService;
import com.dinner.util.EntityListUtils;
import com.dinner.util.PageHelper;

public class MenuItemPageAction extends Action {

	private MenuItemService service = null;

	/**
	 * @return the service
	 */
	public MenuItemService getService() {
		return service;
	}

	/**
	 * @param service
	 *            the service to set
	 */
	public void setService(MenuItemService service) {
		this.service = service;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @seeorg.apache.struts.action.Action#execute(org.apache.struts.action.
	 * ActionMapping, org.apache.struts.action.ActionForm,
	 * javax.servlet.http.HttpServletRequest,
	 * javax.servlet.http.HttpServletResponse)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		try {
			String menuTypeID = request.getParameter("typeID");
			
			String pageNum = request.getParameter("pageNum");
			int page = pageNum == null ? 1 : Integer.parseInt(pageNum);
			
			PageHelper p = new PageHelper();
			p.setCurrentPage(page);
			p.setAdditionPath("menuItemPage.do?typeID="+menuTypeID+"&");
			
			List<MenuItem> list = service.getMenuItemsByTypeAndPage(Integer
					.parseInt(menuTypeID), p);
			List<MenuType> l = (List<MenuType>) request.getSession()
					.getAttribute("MenuTypeList");
			
			request.setAttribute("type", EntityListUtils.getTypeFromList(l,
					Integer.parseInt(menuTypeID)));
			request.setAttribute("MenuItemList", list);
			request.setAttribute("pageInfo", p);
			
		} catch (NumberFormatException nfe) {
			request.setAttribute("MenuItemQueryError", true);
		}
		return mapping.getInputForward();
	}

}
